Video preview creation based on environment

ABSTRACT

Providing a method for creating and displaying portions of videos called video previews. The video previews may be created using an encoding technique or palette-based optimization technique for the particular user device, application, or network that will display the video preview generated from a portion of the full video. The video previews are configured to play a series of images associated with images from the portion of the full video when the video preview is activated.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a non-provisional application of U.S. PatentApplication No. 61/761,096, filed on Feb. 5, 2013, U.S. PatentApplication No. 61/822,105, filed on May 10, 2013, U.S. PatentApplication No. 61/847,996, filed on Jul. 18, 2013, and U.S. PatentApplication No. 61/905,772, filed on Nov. 18, 2013, which are hereinincorporated by reference in their entirety for all purposes.

This application is related to commonly owned and concurrently filedU.S. patent application Ser. No. ______, entitled “Video PreviewCreation with Link” (Attorney Docket 91283-000710US-896497), U.S. patentapplication Ser. No. ______, entitled “User Interface for Video PreviewCreation” (Attorney Docket 91283-000720US-897301), U.S. patentapplication Ser. No. ______, entitled “Video Preview Creation withAudio” (Attorney Docket 91283-000740US-897294), U.S. patent applicationSer. No. ______, entitled “Generation of Layout of Videos” (AttorneyDocket 91283-000750US-897295), U.S. patent application Ser. No. ______,entitled “Activating a Video Based on Location in Screen” (AttorneyDocket 91283-000760US-897296), which are herein incorporated byreference in their entirety for all purposes.

BACKGROUND

Users commonly provide video content to websites (e.g., YouTube), whichcan be referred to as “posting a video.” The user can spend asignificant amount of time to convey the message of the video before theuser selects the video (e.g., by clicking the video displayed on awebsite). For example, the user can associate a title, a staticthumbnail image, and/or a textual description with the video. Usersoften have an difficult time when the video originates on a differentwebsite and the user tries to upload their video to a video server.Further, the title may not be descriptive of the contents of the video,the static thumbnail image may not summarize the essence of the video,or the description of the video may be a poor signal for whether thevideo will be interesting to a viewer.

Video browsing is also limited. Other users (e.g., viewers) can accessand view the video content via the websites. For example, the viewerscan see a video's title and static thumbnail of the video beforedeciding whether to play the full video. However, the viewers may findit difficult to select particular videos of interest because the titlemay not be descriptive of the contents of the video, the staticthumbnail image may not summarize the essence of the video, or thetextual description with the video may be a poor signal for whether thevideo will be interesting to the viewer. Thus, the viewers may spendsignificant amounts of time searching and watching videos that are notenjoyable to the viewer.

SUMMARY

Embodiments of the present invention can create and display portions ofvideos as video previews. The video previews may be associated with afull video, such that the video preview is generated from a portion ofthe full video. The video previews can be generated in various waysbased and an identification of the device, application, or network thatwill be used to activate or play the video preview. Once activated, thevideo preview can be configured to play a series of images associatedwith images from the portion of the full video when the video preview isactivated (e.g., to convey the essence of the full video via a videopreview).

Additionally, embodiments of the present invention provide a method forcreating video previews without an identification of the device,application, or network that will be used to activate or play the videopreview. For example, a computing device can generate multiple videopreviews in anticipation of a selected medium for activating the videopreview. In another example, the computing device can receive parallelinput streams of the full video to speed up generation of the multiplevideo previews.

Further, embodiments of the present invention provide a method forcreating a compressed video file using a palette-based optimizationtechnique. For example, a computing device may create a common colorpalette among multiple images specified in the full video. The commoncolor palette can be used to generate the compressed video file.

Other embodiments are directed to systems and computer readable mediaassociated with methods described herein.

A better understanding of the nature and advantages of the presentinvention may be gained with reference to the following detaileddescription and the accompanying drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a flowchart illustrating a method of creating a videopreview, organizing the video previews, and providing a user interfacethat includes the video previews according to an embodiment of thepresent invention.

FIG. 2 shows block diagrams of various computing devices used togenerate or provide a video preview.

FIG. 3 shows flowchart illustrating a method of identifying a videopreview from a full video according to an embodiment of the presentinvention.

FIG. 4 shows illustrations of a video preview displayed with variousdevices according to an embodiment of the present invention.

FIG. 5 shows illustrations of a video preview displayed in variousapplications according to an embodiment of the present invention.

FIG. 6 shows flowchart illustrating a method of generating a videopreview using a palette-based optimization technique according to anembodiment of the present invention.

FIG. 7 shows an illustration of a common color palette according to anembodiment of the present invention.

FIG. 8 shows a block diagram of a computer apparatus according to anembodiment of the present invention.

DEFINITIONS

A “video preview” or “compressed video file” (used interchangeably) is avisual representation of a portion of a video (also referred to as a“full video” to contrast a “video preview” of the video). The full videomay correspond to the entirety of a video file or a portion of the videofile, e.g., when only a portion of the video file has been streamed to auser device. The preview is shorter than the full video, but the fullvideo can be shorter than the complete video file. The preview canconvey the essence of the full video. The video preview is shorter(e.g., fewer images, less time) than a full (e.g., more images, longertime, substantially complete) video. In various embodiments, a previewcan be a continuous portion of the full video or include successiveframes that are not continuous in the full video (e.g., two successiveframes of the preview may actually be one or more seconds apart in thefull video).

DETAILED DESCRIPTION

Embodiments of the present invention can enhance video viewing byproviding short, playable video previews through a graphical userinterface (GUI) or provided directly to the user device (e.g., stored ina clipboard). Viewers can use the GUI of video previews to better decidewhether to watch a full video, or channel of videos.

In one embodiment, the user may create a video preview that may later beaccessed by a viewer. For example, the user may select the best 1-10seconds of a video to convey the essence of the full video. The videopreview can be shorter (e.g., fewer images, less time) than a full(e.g., more images, longer time, substantially complete) video. Thesystem associated with the GUI may generate a smaller file to associatewith the video portion (e.g., animated GIF, MP4, collection of frames,RIFF). The system may provide the GUI on a variety of systems. Forexample, the GUI can be provided via an internet browser or clientapplications (e.g., software configured to be executed on a device), andconfigured to run on a variety of devices (e.g., mobile, tablet,set-top, television, game console).

I. Providing Video Previews

FIG. 1 shows a flowchart illustrating a method 100 of creating a videopreview, organizing the video previews, and providing a user interfacethat includes the video previews according to an embodiment of thepresent invention. The method 100 may comprise a plurality of steps forimplementing an embodiment of creating a video preview based on anenvironment (e.g., the user device, application, or network that willdisplay a video preview or transfer the video preview to a destination).Various computing devices may be used to perform the steps of themethod, including video servers, provider servers, user devices, orthird party devices.

At step 110, a video preview may be generated. Embodiments of theinvention may provide a graphical user interface for a user that allowsthe user to request to generate a video preview, the request specifyinga portion of a full video to use as the video preview. The system maygenerate the video preview based on the type of device or applicationthat will display the video preview (e.g., using input from the user,using information transmitted from the device, using an identifierspecifying the device, application, or network that will display thevideo preview). The input may be active (e.g., the user or deviceproviding an identification the device or application in response to arequest, a third party providing information for a plurality ofstreaming television programs) or passive (e.g., the device transmittinginformation as a push notification). In response to the input (e.g.,identifier), the computing device can determine an encoding techniquebased on the identifier to generate the video preview and create thevideo preview from the full video based on the determined encodingtechnique.

Additional means of generating video previews can be found in U.S.patent application Ser. No. ______, entitled “Video Preview Creationwith Link” (Attorney Docket 91283-000710US-896497), U.S. patentapplication Ser. No. ______, entitled “User Interface for Video PreviewCreation” (Attorney Docket 91283-000720US-897301), and U.S. patentapplication Ser. No. ______, entitled “Video Preview Creation withAudio” (Attorney Docket 91283-000740US-897294), which are incorporatedby reference in their entirety.

At step 120, one or more video previews may be organized into one ormore channels or collections. For example, the method 100 can associatethe video preview generated in step 110 (e.g., a 4-second animated GIFof a snowboarder jumping off a ledge) with a channel (e.g., a collectionof videos about snowboarders). In some embodiments, the video previewsmay be organized in a group (e.g., a composite, a playable group, acluster of video previews) and displayed on a network page. Additionalinformation about the organization and layout of video previews cam befound in U.S. patent application Ser. No. ______, entitled “Generationof Layout of Videos” (Attorney Docket 91283-000750US-897295), which isincorporated by reference in its entirety.

At step 130, a GUI may be provided with the video previews. For example,the GUI may provide one or more channels (e.g., channel relating tosnowboarders, channel relating to counter cultures), one or more videoswithin a channel (e.g., a first snowboarding video, a secondsnowboarding video, and a first counter culture video), or a networkpage displaying one or more video previews. The video previews may beshared through social networking pages, text messaging, or other means.Additional information about viewing and sharing video previews can befound in U.S. patent application Ser. No. ______, entitled “Activating aVideo Based on Location in Screen” (Attorney Docket91283-000760US-897296), which is incorporated by reference in itsentirety.

II. System for Providing Video Previews

Various systems and computing devices can be involved with variousworkflows used to create a video preview based on the environment thatwill display the video preview.

FIG. 2 shows block diagrams of various computing devices used togenerate or provide a video preview. For example, the computing devicescan include a video server 210, a provider server 220, a user device230, or a third party server 240 according to an embodiment of thepresent invention. In some embodiments, any or all of these servers,subsystems, or devices may be considered a computing device.

The computing devices can be implemented various ways without divertingfrom the essence of the invention. For example, the video server 210 canprovide, transmit, and store full videos and/or video previews (e.g.,Ooyala®, Brightcove®, Vimeo®, YouTube®, CNN®, NFL®, Hulu®, Vevo®. Theprovider server 220 can interact with the video server 210 to providethe video previews. In some embodiments, the provider server 220 canreceive information to generate the video preview (e.g., an identifierspecifying a device or application for displaying a video preview, atimestamp of a location in a full video, a request specifying a portionof a full video, a link to the full video, the full video file, a pushnotification including the link to the full video). The user device 230can receive a video preview and/or full video to view, browse, or storethe generated video previews. The third party server 240 can alsoreceive a video preview and/or full video to view or browse thegenerated video previews. In some embodiments, the user device 230 orthird party server 240 can also be used to generate the video preview orcreate a frame object. Additional information about the video server210, provider server 220, user device 230, and third party server 240can be found in U.S. patent application Ser. No. ______, entitled “VideoPreview Creation with Link” (Attorney Docket 91283-000710US-896497) andU.S. patent application Ser. No. ______, entitled “User Interface forVideo Preview Creation” (Attorney Docket 91283-000720US-897301), whichare incorporated by reference in their entirety.

The video server 210 or third party server 240 may also be a contentprovider for a full video, including one or more images contained in thefull video, information about the full video (e.g., title, televisionchannel information, television programming information for a user'slocation). In some embodiments, the third party server 240 can interactwith the user device 230 to provide the additional information to theuser device 230 or provider server 220 (e.g., related to televisionprogramming in the Bay Area of California, related to U.S. versusforeign television programming). The third party server 240 can identifya particular show (e.g., full video) that the user is likely watchingbased on the location of the user and channel that the user device 230is receiving.

In some embodiments, the video server 210, provider server 220, a userdevice 230, and third party server 240 can be used to receive portionsof a full video in a plurality of video streams (e.g., parallel I/O) atthe computing device (e.g., provider server 220). With multiple portionsin the full video received (e.g., at the provider server 220), thecomputing device can create multiple video previews simultaneously(e.g., using multiple encoding techniques).

In some embodiments, the identification of the user device 230,application, or network that is used to display the video preview canaffect the creation of the video preview. For example, a computingdevice (e.g., provider server 220) can receive an identifier specifyinga device (e.g., an Android® device) for displaying the video preview.The device may be the user device 230 or recipient device of the videopreview from the user device (e.g., Apple iPhone® sending the videopreview to an Android® device). The provider server 220 can create(e.g., encode, compress, transcode) the video preview based on adetermined encoding technique (e.g., video codecs including H.264 AVC,MPEG-4 SP, or VP8).

III. Creation of a Video Preview

A video preview may be generated by a provider server 220, user device230, or video server 210. In some embodiments, a third party server 240may generate a video preview using a similar process as a user device230.

A. Identifying a Video Preview from a Full Video

FIG. 3 shows flowchart illustrating a method of identifying a videopreview from a full video according to an embodiment of the presentinvention. For example, a video may begin as a series of frames orimages (e.g., raw format) that are encoded by the video server 210 intoa full video. The full video may reduce the size of the correspondingfile and enable a more efficient transmission of the full video to otherdevices (e.g., provider server 220, user device 230). In someembodiments, the provider server 220 can transcode the full video (e.g.,change the encoding for full video to a different encoding, encoding thefull video to the same encoding or re-encoding) in order to generate andtransmit the video preview. For example, transcoding may change thestart time of a video, duration, or caption information.

The video server 210 may store and provide a full video. The full videocan be received from a user or generated by the computing device andoffered to users through a network page. In some embodiments, anothercomputing device (e.g., a user device 230, a third party server 240) canupload the full video to the video server 210.

At block 310, a request to generate a video of a full video can bereceived. For example, the request to generate a video preview of a fullvideo can specify a portion of the full video (e.g., the first 10seconds, the last 15 seconds, the portion of the full video identifiedby a timestamp). For example, the user device 230 may identify a videoportion of the full video by identifying a start/end time, a timestampin the full video, or other identification provided by the GUI. Theinformation (e.g., start/end time, timestamp) can be transmitted to theprovider server 220. In some embodiments, a user device 230 canperiodically request to generate a video preview (e.g., every 30seconds, based on a reoccurring or periodic request).

The request can include an identification of the video portion or alitany of other information, including a start/end time, link to a fullvideo at the video server 210, timestamp, the user's internet protocol(IP) address, a user-agent string of the browser, cookies, a user's useridentifier (ID), and other information. A user-agent string, forexample, may include information about a user device 230 in order forthe webserver to choose or limit content based on the known capabilitiesof a particular version of the user device 230 (e.g., client software).The provider server 220 can receive this and other information from theuser device 230.

At block 320, at least a portion of the full video can be received. Forexample, at least the portion of the full video can be received at theprovider server 220 or other computing device. The provider server 220may request a full video based in part on the information received fromthe user device 230. For example, the provider server 220 can transmit arequest (e.g., email, file, message) to the video server 210 thatreferences the full video (e.g., link, identifier). In some examples,the video server 210 and provider server 220 may be connected through adirect and/or secure connection in order to retrieve the video (e.g.,MP4 file, stream, full video portion). The video server 210 may transmitthe full video (e.g., file, link) to the provider server 220 in responseto the request or link to the full video.

At block 330, an identifier specifying a device or application can bereceived. For example, the request from the user device 230 can includean identifier, which is in turn used to request a full video from thevideo server 210. The identifier can specify the device or applicationthat may be used for displaying the video preview. The identifier caninclude a user name, device identifier (e.g., electronic serial number(ESN), international mobile equipment identity (IMEI), mobile equipmentidentifier (MEID), phone number, subscriber identifier (IMSI), devicecarrier), identification of an application for displaying the videopreview (e.g., network page, browser application, operating system).

The identifier can be received through a variety of methods. Forexample, the identifier can be received through an applicationprogramming interface (API), from a television programming provider,from an information feed specifying the device, application, or network(e.g., from a third party server 240 or user device 230), from metadata,from a user (e.g., passive/active input), or other sources.

In some embodiments, the request sent to the video server 210 may varydepending on the type video needed for the full video or requested videopreview. For example, the full video may be a raw MP4 format (e.g.,compressed using advanced audio coding (AAC) encoding, Apple Losslessformat). The provider server 220 can determine that the desired formatfor the user device 230 is a different type of file format (e.g., ananimated GIF) and request additional information from the video server210 in order to transcode the MP4 format to an animated GIF format forthe user device 230 (e.g., including the device type, application thatwill play the video preview, etc.).

At block 340, an encoding technique can be determined. For example, anencoding technique can be determined based on the identifier specifyingthe device or application for displaying the video preview. The encodingtechnique can be used to generate the video preview (e.g., using aportion of the full video). A variety of encoding techniques can beused, including a graphics interchange format (GIF), animated GIF, MP4container, a H.264 video codec, an advanced audio coding (AAC) audiocodec, WebM container, VP8 video codec, an Ogg Vorbis audio codec, orMPEG-4 SP.

In some embodiments, the encoding technique is dependent on theidentification of a type of user device that submitted the request togenerate the video preview. In some embodiments, the encoding techniqueis dependent on the type of application that will display the videopreview at the user device.

Multiple encoding techniques can be used. For example, one encodingtechnique can be used to generate a first video preview and a secondencoding technique can be used to generate a second video preview. Thesecond video preview can be generated to allow the user device to sharethe second video preview through a particular medium. The first videopreview and second video preview can be provided to the user device 230.

In some embodiments, a palette-based size optimization can be includedas an encoding technique. For example, the encoding technique caninclude a palette-based size optimization by generating a common colorpalette for the video preview and limiting the video preview to thecommon color palette (e.g., limiting the images in the video preview toparticular colors identified by the common color palette).

At block 350, a video preview can be created. For example, the providerserver can create the video preview from the full video based on thedetermined encoding technique. In some embodiments, the video previewcan be created using a plurality of video streams (e.g., parallel I/O).With multiple portions in the full video received (e.g., at the providerserver 220), the computing device can create multiple video previews(e.g., simultaneously, to expedite video preview creation, etc.).

At block 360, the video preview may be provided. For example, the videopreview can be provided to the user device 230. The video preview may beprovided using various methods. For example, the video preview can betransmitted via a messaging service to the user device 230, in anattachment to an email, embedded in a short messaging service (SMS) ortext message, provided through a GUI accessible by the user device, orother methods. In some embodiments, the video preview (e.g., file,animated GIF, link to a video preview) may be stored in a temporarylocation (e.g., clipboard, temporary data buffer) at a user device 230after the video preview is generated. The user may copy/paste the videopreview to an email client, SMS, or other application in order to use orshare the video with other applications and/or devices.

The video preview can be provided to the user device 230 in a variety offormats. For example, the video preview can be provided with a link to astored file on a webserver and/or the provider server 220, an animatedGIF file, an MP4 file, or other acceptable file format. In someexamples, the video preview can be provided in a format based in part ona particular type of user device 230 (e.g. Apple iPhones can receive aMPEG-4 formatted file, Android machines can receive an AVI formattedfile). As illustrated, the user device 230 may provide information(e.g., identifier specifying a device, application, device type, oroperating system) to the provider server 220 prior to receiving theproperly formatted video preview and the provided video preview cancorrespond with that information.

In some embodiments, multiple video previews can be provided. Forexample, the computing device (e.g., provider server 220) can sendmultiple video previews to a device (e.g., the clipboard, temporary databuffer). The user may choose to paste the video preview into aparticular application (e.g., messaging service, email client) and theproperly encoded video preview for that application can be provided tothe application. For example, the user may access a GUI provided by theprovider server 220 that includes one or more request tools (e.g.,buttons, text boxes) to access particularly encoded video previews. Whenthe user selects one of the request tools, the corresponding videopreview can be provided to the user. In some examples, the user mayprovide (e.g., copy/paste) a link to the video preview and the link candirect the user to a properly encoded video preview.

In some embodiments, the video preview can be provided to the userdevice 230 identified in a request from the user device. For example,the user device can specify the ultimate device or application that theuser device 230 intends to use to display the video preview (e.g.,through the use of multiple request tools or buttons in a GUI providedby the provider server 220, through user input). The user can select arequest tool in the GUI (e.g., “I want a video preview for an SMSmessage”) and the received video preview can be encoded for theidentified use. In another example, the user can select a request toolin the GUI that identifies a social networking platform (e.g.,Facebook®, Twitter®, Google+®, Tumblr®), so that the received videopreview can be uploaded directly to the social networking website.

B. Correlating an Identifier with an Encoding Technique

In some embodiments, the user device 230 will transmit an identifierspecifying a device or an application for displaying the video preview.The identifier can be matched with a list of identifiers at the providerserver 220 (e.g., in a database) to find a matching identifier. If thereceived identifier is identified or found at the provider server 220,the provider server 220 can determine an encoding technique for the userdevice based on the identifier. Similarly, an application (e.g., or acorresponding device configured to execute the application) can providean identifier to the provider server 220 that specifies the applicationfor displaying the video preview. If the identifier is found, theprovider server can determine an encoding technique for the applicationbased on the identifier.

Once the encoding technique is determined based on the identifier, otherencoding techniques can be determined as well. For example, fiveencoding techniques can be available and each may correspond with one ormore identifiers. The encoding technique associated with the receivedidentifier can be selected and used to start creating the video preview.In some embodiments, one or more of the encoding techniques that do notcorrespond with the received identifier can also be used to create oneor more video previews, including a video preview created from a fullvideo.

When the identifier is not found or the device/application does notprovide an identifier, an encoding technique can still be determined. Insome embodiments, a default encoding technique can be selected (e.g., ananimated GIF) and provided to the user device 230 or application.

In some embodiments, multiple encoding techniques can be used. Forexample, one or more encoding techniques can be used to create a firstvideo preview, one or more encoding techniques can be used to create asecond video preview, and so on. The plurality of video previews(including the first and second video previews) can be sent to the samedevice or application. The device may store the plurality of videopreviews in a temporary storage (e.g., clipboard or cache). When theuser would like to display the video preview, the appropriate videopreview can be selected and used for the appropriate device/application(e.g., Firefox® application receives a video preview using a WebM videocontainer). In some embodiments, a video preview encoded with apreferred or default encoding technique can be sent to the device orapplication first, followed by other video previews created usingdifferent encoding techniques and/or stored at a provider server 220.

C. Determining an Encoding Technique Based on the Type of User Device

FIG. 4 shows illustrations of a video preview displayed with variousdevices according to an embodiment of the present invention. Forexample, the provided video preview can be displayed on a variety ofdifferent user devices 230 in a variety of different formats, includinghandheld devices 410, laptops 420, televisions 430, game consoles 440,and the like. The video preview 450 can be displayed as a series ofimages from a full video. In some embodiments, the video preview 450 caninclude a caption 460, link 470 (e.g., to the full video, to the videopreview, to additional information associated with the video preview, toa stored video preview on a video server 210), or other information. Insome examples, the video preview may be displayed in a frame object.

For example, the identifier may specify the device as an Apple® device(e.g., a handheld device 410 or laptop 420) or a device running an iOSoperating system (e.g., iPhone®, iPad®). In some embodiments, theprovider server 220 can generate a video preview and transmit the videopreview to an encoding service (e.g., Cloud Video Encoding, Cloud VideoTranscoding) or third party server 240. The provider server 220 canreceive the properly encoded video preview and provide the video previewto a user device 230 (e.g., so that the video preview plays whenactivated). In other embodiments, the provider server 220 can generate avideo preview (e.g., locally) by using a particular encoding technique.For example, the encoding technique can include a H.264 video codec(e.g., used up to 1080p), 30 frames per second (FPS), High Profile level4.1 with advanced audio coding low complexity (AAC-LC) audio codec up to160 Kbps, 48 kHz, stereo audio with .m4v, .mp4, and .mov videocontainer. In another example, the encoding technique can include aMPEG4 video codec up to 2.5 Mbps, 640 by 480 pixels, 30 FPS, SimpleProfile with AAC-LC audio codec up to 160 Kbps per channel, 48 kHz,stereo audio with .m4v, .mp4, and .mov video container. In yet anotherexample, the encoding technique can include a Motion JPEG (M-JPEG) up to35 Mbps, 1280 by 720 pixels, 30 FPS, audio in ulaw, PCM stereo audiowith .avi as the video container.

In another example, the identifier may specify the device as a devicethat runs an Android® operating system (e.g., operating on a Samsung®handheld device 410). The provider server 220 can generate a videopreview using a particular encoding technique for this particulardevice. For example, the encoding technique can include a H.264 videocodec with a 3GPP, MPEG-4, or MPEG-TS video container. In anotherexample, the encoding technique can include a VP8 video codec with aWebM (.webm) or Matroska (.mkv) video container. The encoding techniquemay also include audio codecs, including AAC-LC, HE-AACv1, HE-AACv2,AAC-ELD AMR-NM, AMR-WB, FLAC, MP3, MIDI, Vorbis, or PCM/WAVE. Theencoding technique may also include various specifications for videoresolution (e.g., 480 by 360 pixels, 320 by 180 pixels), frame rate(e.g., 12 FPS, 30 FPS), video bit rate (e.g., 56 Kbps, 500 Kbps, 2Mbps), audio channels (e.g., 1 mono or 2 stereo), audio bit rate (e.g.,24 Kbps, 128 Kbps, 192 Kbps), or other specifications.

In another example, the identifier may specify the device as atelevision 430. In some embodiments, the provider server 220 can receivea full video from a third party server 240 (e.g., broadcast center, settop box data provider). When an analog television is used (e.g.,identified by the identifier that specifies the device), the encodingtechnique can include a national television system committee (NTSC),phase alternating line (PAL), or sequential color with memory (SECAM)analog encoding. The video preview can be provided using a radiofrequency (RF) modulation to modulate the signal onto a very highfrequency (VHF) or ultra-high frequency (UHF) carrier. When televisionsthat run an Android® operating system (e.g., Google TV set top boxes) oran iOS operating system (e.g., Apple TV), the encoding techniques can besimilar to the technique described above (e.g., .mp4 container, H.264video codec, AAC audio codec, etc.). When a satellite television isused, the encoding technique can include a MPEG video codec to generatethe video preview, followed by a MPEG-4 video codec adjusting the sizeand format of the video preview for the satellite television receiver(e.g., television 430). In some embodiments, the video preview can beencrypted from the provider server 220 and decrypted at the television430.

In another example, the identifier may specify the device as a gameconsole 440. In some embodiments, the provider server 220 can receive anidentifier specifying the device is a game console. The provider servercan also receive a full video from the game console 440 (e.g., a streamof images showing the user interacting as a digital character in aplayed game to use as the full video). The encoding technique caninclude PAL, NTSC, animated GIF, MP4 container, a H.264 video codec, anAAC audio codec, WebM container, VP8 video codec, an Ogg Vorbis audiocodec, or other encoding techniques supported by the game console. Insome embodiments, the game console 440 can provide a video/audio captureapplication programming interface (API). The provider server 220 cancapture the images provided on the game console 440 via the API (e.g.,the game play could be the “full video”) and create the video preview atthe provider server using the images.

It should be appreciated that the provided encoding techniques areillustrations. Other encoding techniques are available without divertingfrom the essence of the invention.

D. Encoding Captions

The determined encoding technique can also be used to encode captions460. For example, the video preview may be created from the full videobased on the determined encoding technique. The caption may also use thedetermined encoding technique. For example, the caption may include adual-layer file (e.g., soft captioning), where each layer is encodedusing the encoding technique, so that the caption may be adjustedindependently from the video preview (e.g., change language of the textin the caption). The video preview and caption can overlap (e.g., wherethe caption can be displayed on top of the video preview layer withoutaltering the video preview itself). In another example, the videopreview and caption can be transcoded in order to incorporate thecaption with the video preview in a single-layered video preview (e.g.,caption “burned in” to the video). Additional information aboutincorporating captions can be found in U.S. patent application Ser. No.______, entitled “Video Preview Creation with Link” (Attorney Docket91283-000710US-896497), which is incorporated by reference in itsentirety.

E. Determining an Encoding Technique Based on the Application that WillDisplay the Video Preview

FIG. 5 shows illustrations of a video preview displayed in variousapplications according to an embodiment of the present invention. Forexample, the environment 500 can comprise a plurality of computingdevices, including a provider server 220, one or more user devices 230(e.g., 530, 540), and an application 550. The provider server 220 cancreate and provide a plurality of video previews 520, 522, 524 to theother devices and applications in the environment.

In some embodiments, the identifier may specify that the application isa network browser (e.g., Firefox, Internet Explorer, Chrome). Theprovider server 220 can create a video preview using a particularencoding technique for the network browser. For example, the encodingtechnique can include WebM (.webm) video container based on whichencoding techniques the application supports. In another example, theprovider server 220 can create multiple video previews using multipleencoding techniques (e.g., including an .mp4 video container). The firstencoding technique can be provided to the user and other encodingtechniques can be used to create video previews for other applicationsthat may also display the video preview. Network browsers (e.g., otherthan Firefox) may use various encoding techniques, including MP4,animated GIF, Ogg Video files (e.g., file extension .ogv, mime typevideo/ogg), Theora video codec, and Ogg Vorbis audio codec.

Other applications may be identified as well. For example, any softwareapplication (e.g., “app”) or client (e.g., email client) that can beconfigured to run on a mobile device, smartphone, gaming console, ortelevision. Similar encoding techniques may be implemented with theseapplications, including GIFs or encoding techniques where video previewswill not automatically play. In some examples, audio may be omittedbased on constraints of the device or application as well.

F. Determining an Encoding Technique Based on a Network

In some embodiments, the encoding technique can be determined based onthe network. For example, a provider server 220 or user device 230 canidentify that a network is relatively slow. The encoding technique canbe determined to generate a smaller video preview (e.g., a tiny GIF)instead of a larger file, so that the user device 230 can receive thevideo preview significantly quicker. In another example, the identifiermay specify that the video preview will be displayed in a messagingservice (e.g., SMS, multimedia messaging service (MMS), text message).The provider server 220 can determine the encoding technique that cancreate a smaller video preview, because the video preview will likely beviewed using a slower network connection.

IV. Compression Using a Common Color Palette

A video preview or video file may be encoded or compressed using one ormore palette-based optimization techniques. For example, the video filecan be compressed using a common color palette.

A. Use of Common Color Palette

FIG. 6 shows flowchart illustrating a method of generating a videopreview using a palette-based optimization technique according to anembodiment of the present invention.

At block 610, a request to generate a compressed video file can bereceived. For example, the request can specify at least a portion of afull video to be used in creating the compressed video file. Thespecified portion of the full video can comprise a plurality of images.In some embodiments, the computing device can receive informationassociated with the specified portion of the full video (e.g., atimestamp of a location in a full video, a request specifying a portionof a full video, a link to the full video, the full video file, a pushnotification including the link to the full video).

The request can include an identification of the full video or a litanyof other information, including a start/end time, link to a full videoat the video server 210, timestamp, the user's internet protocol (IP)address, a user-agent string of the browser, cookies, a user's useridentifier (ID), and other information. A user-agent string, forexample, may include information about a user device 230 in order forthe webserver to choose or limit content based on the known capabilitiesof a particular version of the user device 230 (e.g., client software).The provider server 220 can receive this and other information from theuser device 230.

At block 620, a palette-based optimization technique can be determined.The palette-based optimization technique can be used to generate thecompressed video file. For example, the palette-based optimizationtechnique can limit the number of colors used to create the compressedvideo file. In another example, a single color palette can be used forencoding the compressed video file, instead of one color palette foreach of the images in the video file.

At block 630, the plurality of images can be analyzed using thepalette-based optimization technique. For example, the analysis candetermine at least one common color palette. The plurality of images andcommon color palette can be used to generate multiple compressed imagesof the compressed video file. In some examples, a representative imagecan be chosen (e.g., for a portion of the full video, for a scene,etc.).

The common color palette can be a single color palette (e.g., acombination of palettes from multiple images) or multiple color palettes(e.g., where one color palette is used for one portion of the images andanother color palette is used for another potion of the images). Forexample, one or more images can be analyzed and the union of the colorsin the analyzed images can be used to make a single common colorpalette. In another example, an image can be chosen as a representativeimage for each scene. In yet another example, one or more images can beanalyzed to identify multiple scenes in the images, e.g., wheredifferent scenes involve different objects and/or backgrounds. A commoncolor palette can be generated for each scene. In another example, acommon color palette can be generated using the union of the colors ineach scene to generate a common color palette for the union of thecolors in the scenes. The colors may be aggregated and/or the union ofthe colors may be used to generate the common color palette.

At block 640, multiple compressed images can be specified. The multiplecompressed images can be generated using the one or more common colorpalettes. For example, the images from the mountain scene or theperson's face can be identified and encoded using one or more commoncolor palettes. In the mountain scene, the multiple compressed imagescan include a first image from the top of the mountain, a second imagefrom 10-feet down the mountain, and a third image from 20-feet down themountain. The resultant images may be compressed images that are limitedto the defined colors in the palette (e.g., the same color palette canbe used for each of the three compressed images, including a colorpalette that uses four colors out of 256 possible colors).

A scene may be an image in the full video or video preview that includesa similar background or combination of pixels as one or more otherframes in the full video or video preview. The scene can include adifferent rendered view of the image in the full video or video preview.For example, a full video may include a first scene showing a Presidentand a second scene showing people walking to meet the President. Thebackground or combination of pixels for the first scene may bedistinguishable from the second scene.

In another example, the multiple compressed images can include differentscenes. The scenes may be analyzed based on the compressed images thatare used to create the scene. For example, the full video can includesix compressed images. The first three compressed images can include thePresident speaking to a group of people and the second three compressedimages can include the group of people listening to the President. Thefull video can pan between the President and the group of people, orsimply capture a plurality of images from the President, pause thecamera or edit the frames to remove the panning, and capture a pluralityof images from the group listening to the President. There may be twocommon color palettes, including one common color palette for thePresident (e.g., navy blues, deep reds) and one common color palette forthe group of people (e.g., pastel colors).

In some examples, the specified portion of the full video can beanalyzed to determine information about a plurality of scenes in thefull video or video preview. For example, before creating the compressedvideo file, the specified portion of the full video can be analyzed. Theanalysis can help determine the plurality of scenes in the specifiedportion of the full video and used to determine a common color palette.The common color palette can be an aggregated combination of the scenes,or multiple common color palettes can be determined for each of theplurality of scenes (e.g., if there are two scenes, then two commoncolor palettes can be determined).

At block 650, the compressed video file can be created. For example, thecompressed video file can be created from the plurality of images of thespecified portion of the full video. As illustrated, the compressedvideo preview can include the two scenes and the common color palettecan be generated from each scene in the video preview. In anotherexample, a single common color palette may be generated based on acombination of the plurality of scenes. The multiple compressed imagescan be rendered using the common color palette when the compressed videofile is viewed.

B. Optimization Techniques

A variety of optimization techniques are possible, includingpalette-based optimization. For example, when generating a compressedvideo file in an animated GIF format, the optimization technique caninclude generating a common color palette. A single common color palettecan be generated for the entire compressed video file (e.g., one paletteshared by each of the images or frames identified in the full video). Insome examples, a plurality of frames can be analyzed and used togenerate a single image. The common color palette can be generated fromthe single combined image.

In some examples, a scene analysis can be one type of optimizationtechnique that is used, without generating a common color palette. Forexample, when a person is speaking into a camera in the full video, themouth of the person may change throughout the full video, but the restof the person's face and background around the person may remainconstant. The optimization technique can use the same image informationfor the minimal changing portions of the image instead of storing newimage information that is substantially the same as the rest of theimage information (e.g., using a cinemagraph generator). In someembodiments, the scene analysis may consider which portions of the imageare static or dynamic through user input using a graphical userinterface. For example, with a “brush”-like tool, the user can click anddrag over the areas that are to remain dynamic.

In an embodiment, the full video may be encoded to an animated GIF usingindexed color. For example, with indexed color, the color informationfor the animated GIF may not be directly stored with image pixel data.Instead, the color information can be stored in an array of colorelements that defines the particular color called a palette.

In a standard animated GIF, as much as one palette for every frame canbe specified. In some embodiments, the palette-based optimizationtechnique can limit the number of palettes used for the frames. Forexample, a common color palette can be generated for a plurality ofimages in the full video (e.g., the portion of the full video thatdisplays a mountain scene with similar colors, the portion of the fullvideo that displays a person's face in the center of the frame as theywalk through a city). In another example, a common color palette can begenerated for a plurality of images using default color specifications(e.g., red-green-blue, black/white, a limited range of red- andblue-tones, etc.). In another example, multiple common color palettescan be generated for one compressed video file, such that one or morecommon color palettes are used for one portion of the full video, one ormore common color palettes are used for a second portion of the fullvideo, and so on.

When a single common color palette is used, the color can be selectedusing various methods. For example, a plurality of images (e.g., fourframes) can be selected that contain the largest file size. The largestframes may, in some embodiments, identify the most colors so that thecommon color palette identifies several colors (e.g., a Mardi Gras sceneversus a snow storm scene). In another example, plurality of images canbe selected that are selected periodically (e.g., minutes 1, 2, and 3 ina 4 minute full video, in the portion of the full video, in thecompressed video file, in the entire full video). The images that areselected periodically can identify a broad representation of the colorsin the image (e.g., assuming that the scene will change as the videoprogresses).

In another embodiment, multiple common color palettes (e.g., paletteclusters) can be identified. For example, in a full video where thecamera cuts back and forth between two people having a conversation, thecolors associated with each person may vary. A common color palette canbe generated for each scene. The common color palettes for each scenecan beneficially reduce file size from the original full video andprovide better quality compressed video file than a single common colorpalette with multiple scenes.

FIG. 7 shows an illustration of a common color palette according to anembodiment of the present invention. For example, the illustration showsa 2-bit indexed image 710 where each pixel 720 is represented by anumber/index, and an image 730, where each number/index corresponds witha color 740. Each pixel may correspond with some value in the colorpalette (e.g., 0 and 1 in the illustration corresponds with black andwhite, respectively). In some optimization techniques, the image can beencoded in a similar method as shown in FIG. 7. The color informationmay not be directly associated with image pixel data (e.g., image pixel[0,0] is Red-100), but can be stored in a separate piece of data calleda color palette. The color palette may be an array of color elements, inwhich each element (e.g., a color) is indexed by its position within thearray. The image pixels may not contain the full specification of itscolor, but can potentially contain its index in the palette. Once thecolor palette is generated (e.g., bitmap corresponding with the 2-bitindexed image 710 on the top of FIG. 7), the image 730 can be formedusing the color palette (e.g., the checkerboard image on the bottom ofFIG. 7). The image 730 can result in a close representation of anoriginal image (e.g., and video preview) that uses less memory orstorage.

In some embodiments, a pixel 720 is associated with a correspondingcolor 740 in a color palette. For example, pixel [0,0] can be associatedwith neon green. As discussed, several pixels are used to create animage or frame, and then several images or frames are used to generatethe video preview. As illustrated, pixel 720 corresponds with a blackcolor 740 and the pixel next to 720 corresponds with a white color. Thecommon color palette can include only black and white because black andwhite are the only colors in this image or frame. The other images orframes of the video preview (e.g., 100 other frames or images) can becreated using only black and white, so that when all the images orframes that use the common color palette are sequentially ordered toform the video preview, the video preview will comprise the colors inthe common color palette. The reduced number of colors that are storedin a color palette (e.g., fewer numbers associated with colors, fewercolors associated with images/frames, a reduced number of colors, etc.)can result in a reduced size in memory or storage for storing the colorpalette.

Depending on the optimization technique used, the common color palettecan be generated from one or more images that contain at least aspecified file size. The specified file size can be above a certainthreshold (e.g., an image that is above 1-kilobyte (1 k)) or include themaximum file size when compared with other images in the full video(e.g., the first image is 1 k, the second image is 1.5 k, the thirdimage is 2 k, so the specified file size is 2 k and the common colorpalette can be generated using the third image). The specified file sizecan be retrieved (e.g., the threshold or maximum file size can beretrieved from a provider server 220 or user device 230), dynamicallydetermined (e.g., when the request to generate a compressed video fileis received), and/or specified by a user operating a user device 230.

A compression can be combined with an optimization technique to furtheroptimize the video preview (e.g., to take advantage of a region ofpixels with the same color). For example, the left-half of the image maybe black (e.g., a black building, a night image in a video preview,etc.). The values associated with the pixels in the image showing theblack portion can be compressed by storing one value instead of many.The one value may be the same or similar for each of those pixels on theleft-half of the image, so the compression can store the single color.The pixels in the left-half of the image can reference the single storedcolor. In another example, the image may contain a frame around theimage. The color of the frame can be stored as one color and each of thepixels or portions of the image that are used to create the frame canreference the one color.

V. Example Subsystems and Components

Any of the clients or servers may utilize any suitable number ofsubsystems. Examples of such subsystems or components are shown in FIG.8. The subsystems shown in FIG. 8 are interconnected via a system bus875. Additional subsystems such as a printer 874, keyboard 878, fixeddisk 879, monitor 876, which is coupled to display adapter 882, andothers are shown. Peripherals and input/output (I/O) devices, whichcouple to I/O controller 871, can be connected to the computer system byany number of means known in the art, such as input/output (I/O) port877 (e.g., USB, FireWire®). For example, I/O port 877 or externalinterface 881 (e.g. Ethernet, Wi-Fi, etc.) can be used to connect thecomputer apparatus to a wide area network such as the Internet, a mouseinput device, or a scanner. The interconnection via system bus allowsthe central processor 873, which may include one or more processors, tocommunicate with each subsystem and to control the execution ofinstructions from system memory 872 or the fixed disk 879 (such as ahard drive or optical disk), as well as the exchange of informationbetween subsystems. The system memory 872 and/or the fixed disk 879 mayembody a computer readable medium. Any of the data mentioned herein canbe output from one component to another component and can be output tothe user.

It should be understood that any of the embodiments of the presentinvention can be implemented in the form of control logic using hardware(e.g. an application specific integrated circuit or field programmablegate array) and/or using computer software with a generally programmableprocessor in a modular or integrated manner. As user herein, a processorincludes a multi-core processor on a same integrated chip, or multipleprocessing units on a single circuit board or networked. Based on thedisclosure and teachings provided herein, a person of ordinary skill inthe art will know and appreciate other ways and/or methods to implementembodiments of the present invention using hardware and a combination ofhardware and software.

Any of the software components or functions described in thisapplication may be implemented as software code to be executed by aprocessor using any suitable computer language such as, for example,Java®, C++ or Perl using, for example, conventional or object-orientedtechniques. The software code may be stored as a series of instructionsor commands on a computer readable medium for storage and/ortransmission, suitable media include random access memory (RAM), a readonly memory (ROM), a magnetic medium such as a hard-drive or a floppydisk, or an optical medium such as a compact disk (CD) or DVD (digitalversatile disk), flash memory, and the like. The computer readablemedium may be any combination of such storage or transmission devices.

Such programs may also be encoded and transmitted using carrier signalsadapted for transmission via wired, optical, and/or wireless networksconforming to a variety of protocols, including the Internet. As such, acomputer readable medium according to an embodiment of the presentinvention may be created using a data signal encoded with such programs.Computer readable media encoded with the program code may be packagedwith a compatible device or provided separately from other devices(e.g., via Internet download). Any such computer readable medium mayreside on or within a single computer program product (e.g. a harddrive, a CD, or an entire computer system), and may be present on orwithin different computer program products within a system or network. Acomputer system may include a monitor, printer, or other suitabledisplay for providing any of the results mentioned herein to a user.

Any of the methods described herein may be totally or partiallyperformed with a computer system including one or more processors, whichcan be configured to perform the steps. Thus, embodiments can bedirected to computer systems configured to perform the steps of any ofthe methods described herein, potentially with different componentsperforming a respective steps or a respective group of steps. Althoughpresented as numbered steps, steps of methods herein can be performed ata same time or in a different order. Additionally, portions of thesesteps may be used with portions of other steps from other methods. Also,all or portions of a step may be optional. Additionally, any of thesteps of any of the methods can be performed with modules, circuits, orother means for performing these steps.

The specific details of particular embodiments may be combined in anysuitable manner without departing from the spirit and scope ofembodiments of the invention. However, other embodiments of theinvention may be directed to specific embodiments relating to eachindividual aspect, or specific combinations of these individual aspects.

The above description of exemplary embodiments of the invention has beenpresented for the purposes of illustration and description. It is notintended to be exhaustive or to limit the invention to the precise formdescribed, and many modifications and variations are possible in lightof the teaching above. The embodiments were chosen and described inorder to best explain the principles of the invention and its practicalapplications to thereby enable others skilled in the art to best utilizethe invention in various embodiments and with various modifications asare suited to the particular use contemplated.

A recitation of “a”, “an” or “the” is intended to mean “one or more”unless specifically indicated to the contrary.

What is claimed is:
 1. A method of creating a video preview, the methodcomprising: receiving, at the provider server, a request to generate avideo preview of a full video, the request specifying a portion of thefull video; receiving at least the portion of the full video at theprovider server; receiving an identifier specifying a device or anapplication for displaying the video preview; determining an encodingtechnique based on the identifier to generate the video preview, whereinthe video preview being of the portion of the full video; creating, bythe provider server, the video preview from the full video based on thedetermined encoding technique; and providing, by the provider server,the video preview to a user device.
 2. The method of claim 1, whereinthe encoding technique is dependent on the identification of a type ofuser device that submitted the request to generate the video preview. 3.The method of claim 1, wherein the encoding technique is dependent onthe type of application that will display the video preview at the userdevice.
 4. The method of claim 1, wherein the encoding techniqueincludes a graphics interchange format (GIF), MP4 container, a H.264video codec, an advanced audio coding (AAC) audio codec, WebM container,VP8 video codec, or an Ogg Vorbis audio codec.
 5. The method of claim 1,wherein the video preview is a first video preview generated using afirst encoding technique, and the method further comprising: generatinga second video preview using a second encoding technique, wherein thesecond video preview is generated to allow the user device to share thesecond video preview through a particular medium; and providing both thefirst video preview and second video preview to the user device.
 6. Themethod of claim 1, further comprising: downloading the full videothrough a plurality of video streams, wherein the plurality of videostreams include video content from the full video; and generating one ormore video previews from video content received through the plurality ofvideo streams.
 7. The method of claim 1, wherein the video preview is afirst video preview, the determined encoding technique is a firstencoding technique, and the method further comprises: determining asecond encoding technique, wherein the second encoding technique isdifferent than the first encoding technique, and wherein the secondencoding technique is used to share the second video preview with adifferent device or application than the first encoding technique; andcreating a second video preview using a second encoding technique. 8.The method of claim 1, wherein the encoding technique includes apalette-based size optimization by generating a common color palette forthe video preview and limiting the video preview to the common colorpalette.
 9. A method of compressing a video file the method comprising:receiving, at a computer, a request to generate a compressed video file,the request specifying at least a portion of a full video to be used increating the compressed video file, wherein the specified portion of thefull video comprises a plurality of images; determining, by a computer,a palette-based optimization technique to generate the compressed videofile; analyzing, by a computer, the plurality of images using thepalette-based optimization technique to determine at least one commoncolor palette, each to be used to generate multiple compressed images ofthe compressed video file; specifying, by a computer, a first multiplecompressed images to be generated using a first common color palette;and creating, by a computer, the compressed video file from theplurality of images of the specified portion of the full video such thatthe first multiple compressed images are rendered using the first commoncolor palette when the compressed video file is viewed.
 10. The methodof claim 9, further comprising providing, by the provider server, thevideo preview to a user device.
 11. The method of claim 9, wherein thecommon color palette for the video preview is limited to a single framein the video preview.
 12. The method of claim 9, wherein the at leastone common color palette is generated from one or more images thatcontain at least a specified file size.
 13. The method of claim 12,wherein the specified file size is above a threshold.
 14. The method ofclaim 12, wherein the specified file size corresponds to a maximum filesize when compared with other images in the portion of the full video.15. The method of claim 9, wherein the common color palette is generatedfrom the one or more images that are selected periodically from thevideo preview.
 16. The method of claim 9, further comprising: beforecreating the compressed video file, analyzing the specified portion ofthe full video; determining a plurality of scenes in the specifiedportion of the full video based on the analysis; and generating one ormore common color palettes for each of the plurality of scenes.
 17. Themethod of claim 9, further comprising: before creating the compressedvideo file, analyzing the specified portion of the full video;determining a plurality of scenes in the specified portion of the fullvideo; determining an image that is representative of each scene; andgenerating a common color palette that combines colors from therepresentative images.
 18. The method of claim 9, wherein the commoncolor palette comprises a union of colors identified in the analyzedimages.
 19. The method of claim 9, wherein the palette-basedoptimization technique includes an indexed color technique to managecolors in the frame.
 20. A computer product comprising a non-transitorycomputer readable medium storing a plurality of instructions that whenexecuted control a computer system to create a video preview, theinstructions comprising: receive a request to generate a video previewof a full video, the request specifying a portion of the full video;receive at least the portion of the full video; receive an identifierspecifying a device or an application for displaying the video preview;determine an encoding technique based on the identifier to generate thevideo preview, wherein the video preview being of the portion of thefull video; create the video preview from the full video based on thedetermined encoding technique; and provide the video preview to a userdevice.